export default defineComponent({
    props: {
        // 控件名称
        name: {
            type: String,
            default: ""
        },
        // 当前输入框值
        value: {
            type: String,
            default: ""
        },
        // 是否只读
        readonly: {
            type: Boolean,
            default: false
        },
        // 输入框为空时占位符
        placeholder: {
            type: String,
            default: ""
        },
        // 指定placeholder的样式类，注意页面或组件的style中写了scoped时，需要在类名前写/deep/
        placeholderClass: {
            type: String,
            default: "textarea-placeholder"
        },
        // 输入框为空时占位符的样式
        placeholderStyle: {
            type: String,
            default: ""
        },
        // 是否禁用
        disabled: {
            type: Boolean,
            default: false
        },
        // 禁用状态时的背景色
        disabledColor: {
            type: String,
            default: "#f5f7fa"
        },
        // 最长输入长度，设置为-1的时候不限制最长长度
        maxlength: {
            type: Number,
            default: 140
        },
        // 指定光标与键盘的距离，取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离（单位：px） App、微信小程序、百度小程序、QQ小程序、京东小程序
        cursorSpacing: {
            type: Number,
            default: 0
        },
        // 获取焦点 H5、App需要点击按钮获取焦点的，必须使用@touchend.prevent="onTap"阻止键盘收起默认事件才能获取焦点关于软键盘弹出的逻辑说明，小程序、nvue需使用组件的 focus()、blur() 方法控制焦点
        focus: {
            type: Boolean,
            default: false
        },
        // 设置键盘右下角按钮的文字，仅在 type="text" 时生效。微信小程序、App、H5、快手小程序、京东小程序
        confirmType: {
            type: String as PropType<InputConfirmType>,
            default: "done",
            validator: (value: string): boolean =>
            {
                return ["done", "next", "search", "go"].includes(value);
            }
        },
        // 点击键盘右下角按钮时是否保持键盘不收起 App(3.3.7+)、H5 (3.3.7+)、微信小程序、支付宝小程序、百度小程序、QQ小程序、京东小程序
        confirmHold: {
            type: Boolean,
            default: false
        },
        // 指定focus时的光标位置
        cursor: {
            type: Number,
            default: 0
        },
        // 光标颜色 微信小程序 3.1.0+、H5(4.0+)、App-Vue(4.0+)
        cursorColor: {
            type: String,
            default: ""
        },
        // 光标起始位置，自动聚集时有效，需与selection-end搭配使用
        selectionStart: {
            type: Number,
            default: -1
        },
        // 光标结束位置，自动聚集时有效，需与selection-start搭配使用
        selectionEnd: {
            type: Number,
            default: -1
        },
        // 键盘弹起时，是否自动上推页面 App-Android（vue 页面 softinputMode 为 adjustResize 时无效，使用 x5 内核时无效）、微信小程序、百度小程序、QQ小程序、京东小程序
        adjustPosition: {
            type: Boolean,
            default: true
        },
        // 键盘收起时，是否自动失去焦点 App-Vue 3.0.0+
        autoBlur: {
            type: Boolean,
            default: false
        },
        // 是否忽略组件内对文本合成系统事件的处理。为 false 时将触发 compositionstart、compositionend、compositionupdate 事件，且在文本合成期间会触发 input 事件 App-vue (3.4.4+)、H5 (3.4.4+)、App-nvue不支持
        ignoreCompositionEvent: {
            type: Boolean,
            default: true
        },
        // focus时，点击页面的时候不收起键盘 微信小程序 2.8.2+
        holdKeyboard: {
            type: Boolean,
            default: false
        },
        // 自动聚焦，拉起键盘 京东小程序
        autoFocus: {
            type: Boolean,
            default: false
        },
        // 是否trim值
        trim: {
            type: Boolean,
            default: true
        },
        // 文本输入框文字颜色
        color: {
            type: String,
            default: ""
        },
        // 文本输入框字体大小（单位：px）
        fontSize: {
            type: [String, Number],
            default: 16
        },
        // 文本对齐方式
        textAlign: {
            type: String as PropType<TextAlignType>,
            default: "left",
            validator(value: string): boolean
            {
                return ["left", "right", "center"].includes(value);
            }
        },
        // 用户在编辑元素或其内容时可能输入的数据类型的提示
        inputMode: {
            type: String as PropType<InputMode>,
            default: "text",
            validator: (value: string): boolean =>
            {
                return ["none", "text", "decimal", "numeric", "tel", "search", "email", "url"].includes(value);
            }
        },
        // 输入框高度（单位：px）
        height: {
            type: [String, Number],
            default: 70
        },
        // 是否自动增加高度
        autoHeight: {
            type: Boolean,
            default: false
        },
        // 边框类型，surround-四周边框，bottom-底部边框，none-无边框
        border: {
            type: String as PropType<BorderType>,
            default: "surround"
        },
        // 自定义边框颜色
        borderColor: {
            type: String,
            default: ""
        },
        // 圆角
        radius: {
            type: [String, Number] as PropType<SizeType | string | number>,
            default: "mini"
        },
        // 如果textarea是在一个position:fixed的区域，需要显示指定属性fixed为true
        fixed: {
            type: Boolean,
            default: false
        },
        // 是否显示统计字数
        count: {
            type: Boolean,
            default: false
        },
        // 背景色
        backgroundColor: {
            type: String,
            default: "transparent"
        },
        // 是否默认挂载后触发input事件
        trigger: {
            type: Boolean,
            default: false
        },
        // 是否显示清除按钮
        clearable: {
            type: Boolean,
            default: false
        },
        // 是否阻止事件传播
        stop: {
            type: Boolean,
            default: false
        },
        // 是否阻止事件默认行为
        prevent: {
            type: Boolean,
            default: false
        }
    }
});